#pragma once
#include<iostream>
#include<string>
#include<vector>
//读写头文件   ifstream读，ofstream写
#include<fstream>
//字符串切分头文件
#include<boost/algorithm/string.hpp>
#include<boost/algorithm/string/split.hpp>

using namespace std;
using namespace boost::algorithm;


namespace common
{

class util{

  public:
    //负责从指定路径读取文件内容到output这个string里
    static bool Read(const string& input_path,string* output)
    {
      std::ifstream file(input_path.c_str());
      if(!file.is_open())
      {
        cout<<"open input_file error"<<endl;
        return false;
      }
      //读取整个文件内容，按行追加到output中
      //getline这个函数，读取成功即从文件中读取一行放在line中并返回true，若读取失败/读到文件末尾，则返回false
      string line;
      while(std::getline(file,line))
      {
        *output += (line+"\n");
      }
      file.close();
      return true;
    }


    //基于boost字符串切分，简单的封装一下
    //split(待切字符，分隔符，输出结果)
    static void Split(const string &input,const string& delimiter,vector<string>& output)
    {
      //boost::is_any_of(string),string中的任意字符都可以作为分隔符
      //token_comoress_off      即关闭压缩切分结果
      //    aaa\3bbb\3\3ccc 按照‘\3’压缩可以有两种结果
      //    aaa bbb ccc        token_conpress_on
      //    aaa bbb "" ccc     token_compress_off
      boost::split(output,input,boost::is_any_of(delimiter),boost::token_compress_off); 
    }
};


}//namespace common

